import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

/**
 * @author hu-zhi-jun
 * @date: 2021-06-03
 */
public class CodeGenerator {
    public static void main(String[] args) {
//
//        // 数据源配置
//        String dataSourceUrl = "jdbc:mysql://47.100.0.17:3306/temp?useSSL=false";
//        String userName = "root";
//        String password = "hzjhzj0301";
//        DataSourceConfig dataSourceConfig = new DataSourceConfig.Builder(dataSourceUrl,userName,password)
//
//                .build();
//
//       // dsc.setDriverName("com.mysql.cj.jdbc.Driver");
//
//        AutoGenerator mpg = new AutoGenerator(dataSourceConfig);
//
//        // 全局配置
//        GlobalConfig globalConfig = new GlobalConfig.Builder()
//                .author("hu-zhi-jun")
//                .outputDir("D:/code/"+System.currentTimeMillis())
//                .fileOverride()
//                .build();
////        gc.setActiveRecord(true);
////        gc.setEnableCache(false);// XML 二级缓存
////        gc.setBaseResultMap(true);// XML ResultMap
////        gc.setBaseColumnList(true);// XML columList
//
//
//        // 自定义文件命名，注意 %s 会自动填充表实体属性！
////        gc.setMapperName("%sMapper");
////        gc.setXmlName("%sMapper");
////        gc.setServiceName("%sService");
////        gc.setServiceImplName("%sServiceImpl");
////        gc.setControllerName("%sController");
//
//
//
//
//        // 策略配置
//        StrategyConfig strategyConfig = new StrategyConfig.Builder()
//                .addTablePrefix("erp_")
//                .build();
//        //此处可以修改为您的表前缀
//       // strategy.setTablePrefix(new String[] { "erp_"});
//        // 表名生成策略
//      //  strategy.setNaming(NamingStrategy.underline_to_camel);
//        // 需要生成的表
//        //strategy.setInclude(new String[] { "user" });
//        // 排除生成的表
//        //strategy.setExclude(new String[]{"test"});
//      //  strategy.setEntityLombokModel( true );
//
//
//        mpg.global(globalConfig);
//        mpg.strategy(strategyConfig);
//
//        // 包配置
//        PackageConfig packageConfig = new PackageConfig.Builder()
//                .controller("controller")
//                .entity("po")
//                .build();
//        //pc.setParent("com.erp");
//
//
//        //pc.setModuleName("test");
//        mpg.global(globalConfig);
//        mpg.strategy(strategyConfig);
//        mpg.packageInfo(packageConfig);
//
//        // 执行生成
//        mpg.execute();
        AutoGenerator mpg = new AutoGenerator();

        // 全局配置
        GlobalConfig gc = new GlobalConfig();
        gc.setOutputDir("D:/code/"+System.currentTimeMillis());
        gc.setFileOverride(true);
        gc.setActiveRecord(true);
        gc.setEnableCache(false);// XML 二级缓存
        gc.setBaseResultMap(true);// XML ResultMap
        gc.setBaseColumnList(true);// XML columList
        gc.setAuthor("hu-zhi-jun");

        // 自定义文件命名，注意 %s 会自动填充表实体属性！
        //gc.setMapperName("%sMapper");
        //gc.setXmlName("%sMapper");
        //gc.setServiceName("%sService");
        //gc.setServiceImplName("%sServiceImpl");
        //gc.setControllerName("%sController");

        mpg.setGlobalConfig(gc);

        // 数据源配置
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setDbType(DbType.MYSQL);
        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
        dsc.setUrl("jdbc:mysql://47.100.0.17:3306/shop?useSSL=false");
        dsc.setUsername("root");
        dsc.setPassword("hzjhzj0301");
        mpg.setDataSource(dsc);

        // 策略配置
        StrategyConfig strategy = new StrategyConfig();
        //此处可以修改为您的表前缀
        strategy.setTablePrefix("erp_","hl_","mq_");
        // 表名生成策略
        strategy.setNaming(NamingStrategy.underline_to_camel);
        // 需要生成的表
       // strategy.setInclude("erp_customer");
        // 排除生成的表
        //strategy.setExclude(new String[]{"test"});
        strategy.setEntityLombokModel( true );

        mpg.setStrategy(strategy);

        // 包配置
       // PackageConfig pc = new PackageConfig();
        //pc.setParent("com.erp");
        //pc.setController("controller");
        //pc.setEntity("po");
        //pc.setModuleName("test");
        //mpg.setPackageInfo(pc);

        // 执行生成
        mpg.execute();
    }

}
